It can be a challenge to accurately reproduce colors from a first device, such as a computer monitor, to colors on a second device, such as an image forming device (e.g. color printer). Monitors typically display colors using red, green, and blue (RGB) pixels, while most modern color printers typically display using cyan, magenta, yellow, and black (CMYK) inks or toners. The reproduced color quality may be evaluated based on how true the reproduced colors on the printed page are to the source color on a monitor. In other cases, the color quality may be evaluated based on preferences of the user, such as preferences toward particular skin tones, for example. The mismatched color gamuts between monitors and color printers require color conversions that account for behavior at the gamut boundaries (i.e. minimum and maximum color outputs), among other things.
To perform such color conversion, the second device (or an intermediate device, such as a computer running software) can be configured to map colors from RGB to CMYK. First, source colors for a print job are represented as RGB values, such as 8 bits for each color, corresponding to 24 total bits. In the case of a color printer, a print controller may then perform color conversion to map the RGB values to CMYK values to reproduce the colors on a printed page. The relationships between the two color spaces may be defined as follows:(C,M,Y,K)=f(R,G,B)  Equation 1:C=fC(R,G,B)  Equation 2:M=fM(R,G,B)  Equation 3:Y=fY(R,G,B)  Equation 4:K=fK(R,G,B)  Equation 5:
The functions listed in equations 1-5 above do not have simple global definitions and are instead defined as point-to-point mappings. While the print controller (or other device) could theoretically perform such color conversion computationally for each pixel, the large number of calculations involved makes this an unattractive solution because it would likely slow the printing process. Instead, typical color conversions use one or more Look-Up Tables (LUTs) having previously calculated or empirically determined values stored therein. So, instead of calculating CMYK values from RGB values, the color conversion involves using the RGB values as an index to access corresponding CMYK values in the one or more LUTs. The printer then uses the determined CMYK values to “mark” the page, such as by depositing corresponding amounts of ink or toner.
For example, human skin and green grass may have RGB values of (228, 174, 160) and (95, 200, 12), respectively, according to a particular color space. Using one or more suitable look-up tables, the color conversion could output the mapped respective CMYK values (0, 84, 71, 23) and (140, 0, 247, 0) in a second color space, to be used in printing.
The size and configuration of the LUTs can influence printing speed, printing quality (e.g. accuracy of color reproduction and transitions), and cost (e.g. memory size and type). Of primary interest to the color designer is to create color-conversion LUTs that result in design goals (such as colorimetric matches or preferential coloring) to be achieved.
Thus, an improved method for creating a LUT that provides accurate color conversion and transitions, without sacrificing printing speed or cost, is desired.